100, 'width' => 300, 'flex-height' => true, 'flex-width' => true, )); add_theme_support('html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', )); // Register navigation menus register_nav_menus(array( 'primary' => __('Primary Menu', 'bijlani-theme'), 'footer' => __('Footer Menu', 'bijlani-theme'), )); // Image sizes add_image_size('card-thumbnail', 400, 250, true); add_image_size('hero-image', 1920, 1080, true); add_image_size('featured-content', 300, 200, true);}add_action('after_setup_theme', 'bijlani_theme_setup');/** * Enqueue Scripts and Styles */function bijlani_enqueue_assets() { // Google Fonts wp_enqueue_style( 'bijlani-google-fonts', 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Great+Vibes&display=swap', array(), null ); // Material Symbols wp_enqueue_style( 'material-symbols', 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap', array(), null ); // Tailwind CSS (CDN) wp_enqueue_script( 'tailwindcss', 'https://cdn.tailwindcss.com?plugins=forms,typography,container-queries', array(), null, false ); // GSAP wp_enqueue_script( 'gsap', 'https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js', array(), '3.12.2', true ); // GSAP ScrollTrigger wp_enqueue_script( 'gsap-scrolltrigger', 'https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js', array('gsap'), '3.12.2', true ); // Main theme styles wp_enqueue_style( 'bijlani-style', get_stylesheet_uri(), array('bijlani-google-fonts'), BIJLANI_THEME_VERSION ); // Custom cursor script wp_enqueue_script( 'bijlani-cursor', BIJLANI_THEME_URI . '/assets/js/cursor.js', array(), BIJLANI_THEME_VERSION, true ); // Theme toggle script wp_enqueue_script( 'bijlani-theme-toggle', BIJLANI_THEME_URI . '/assets/js/theme-toggle.js', array(), BIJLANI_THEME_VERSION, true ); // Mobile Menu script wp_enqueue_script( 'bijlani-mobile-menu', BIJLANI_THEME_URI . '/assets/js/mobile-menu.js', array(), BIJLANI_THEME_VERSION, true ); // GSAP animations wp_enqueue_script( 'bijlani-animations', BIJLANI_THEME_URI . '/assets/js/gsap-animations.js', array('gsap', 'gsap-scrolltrigger'), BIJLANI_THEME_VERSION, true ); // Video modal script wp_enqueue_script( 'bijlani-video-modal', BIJLANI_THEME_URI . '/assets/js/video-modal.js', array(), BIJLANI_THEME_VERSION, true );}add_action('wp_enqueue_scripts', 'bijlani_enqueue_assets');/** * Inline Tailwind Config */function bijlani_tailwind_config() { ?> ' . "\n"; echo '' . "\n"; echo '' . "\n"; // OPEN GRAPH (Social) echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; // TWITTER CARD echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n";}add_action('wp_head', 'bijlani_seo_meta_tags', 1);add_action('wp_head', 'bijlani_hreflang_tags', 1);/** * Add hreflang tags for all pages (uses same URL logic as canonical fix) */function bijlani_hreflang_tags() { if (is_tax() || is_category() || is_tag() || is_post_type_archive()) { $q_obj = get_queried_object(); if ($q_obj && !is_wp_error($q_obj)) { $url = get_term_link($q_obj); } else { $url = home_url(add_query_arg(null, null)); } } else { $url = get_permalink(); } if (!is_wp_error($url)) { echo '' . "\\n"; echo '' . "\\n"; echo '' . "\\n"; }}add_action('wp_head', 'bijlani_hreflang_tags', 1);/** * Fix canonical URLs for archive/taxonomy pages * WP default rel_canonical outputs wrong URL for taxonomy archives */function bijlani_fix_canonical() { if (is_tax() || is_category() || is_tag() || is_post_type_archive()) { $q_obj = get_queried_object(); if ($q_obj && !is_wp_error($q_obj)) { $canonical = get_term_link($q_obj); } else { $canonical = home_url(add_query_arg(null, null)); } } else { $canonical = get_permalink(); } if (!is_wp_error($canonical)) { echo '' . "\n"; }}// Remove WP default canonical (runs at priority 10) and replace with oursremove_action('wp_head', 'rel_canonical');add_action('wp_head', 'bijlani_fix_canonical', 1);/** * 2. Schema.org JSON-LD */function bijlani_schema_markup() { $is_practice_page = false; $practice_city = ''; $practice_slug = get_post_field('post_name', get_the_ID()); $practice_areas = ['criminal-lawyer', 'civil-lawyer', 'corporate-lawyer', 'cyber-crime-lawyer', 'divorce-lawyer', 'bail-lawyer']; foreach ($practice_areas as $area) { if (strpos($practice_slug, $area) !== false) { $is_practice_page = true; break; } } if (strpos($practice_slug, 'gurgaon') !== false) $practice_city = 'Gurgaon'; elseif (strpos($practice_slug, 'noida') !== false) $practice_city = 'Noida'; else $practice_city = 'Delhi'; $city_coords = [ 'Delhi' => ['lat' => 28.6328, 'lng' => 77.2268, 'addr' => '141, Patiala House Courts, New Delhi, 110001'], 'Gurgaon' => ['lat' => 28.4595, 'lng' => 77.0266, 'addr' => 'Gurgaon, Haryana, 122001'], 'Noida' => ['lat' => 28.5355, 'lng' => 77.3910, 'addr' => 'Noida, Uttar Pradesh, 201301'], ]; $coord = $city_coords[$practice_city]; if ($is_practice_page) { $clean_slug = ucwords(str_replace('-', ' ', preg_replace('/-(delhi|gurgaon|noida)$/i', '', $practice_slug))); $schema = [ "@context" => "https://schema.org", "@type" => "LegalService", "@id" => home_url('/') . '#organization', "name" => "Bijlani & Co.", "alternateName" => "Bijlani & Co.", "description" => "Expert " . preg_replace('/^Expert /', '', $clean_slug) . " in " . $practice_city . " offering strategic legal representation at Bijlani & Co, Patiala House Courts. Call +91 89685 60456.", "url" => home_url('/'), "telephone" => "+91 89685 60456", "email" => "write@bijlani.in", "image" => home_url('/wp-content/themes/bijlani-theme/assets/images/home-hero.jpg'), "address" => [ "@type" => "PostalAddress", "streetAddress" => $coord['addr'], "addressCountry" => "IN" ], "geo" => [ "@type" => "GeoCoordinates", "latitude" => $coord['lat'], "longitude" => $coord['lng'] ], "openingHours" => "Mo-Fr 09:00-18:00", "areaServed" => [ ["@type" => "City", "name" => $practice_city], ["@type" => "City", "name" => "Delhi NCR"], ["@type" => "State", "name" => "Delhi"], ["@type" => "State", "name" => "Haryana"], ["@type" => "State", "name" => "Uttar Pradesh"] ], "sameAs" => [ "", "https://www.google.com/maps?q=Advocate+Nilesh+Bijlani&kgmid=/g/11flfrdnn_", "https://www.linkedin.com/company/bijlani-in", "https://twitter.com/bijlani_in" ] ]; } else { $schema = [ "@context" => "https://schema.org", "@type" => "LegalService", "@id" => home_url('/') . '#organization', "name" => "Bijlani & Co.", "alternateName" => "Bijlani & Co.", "description" => "Premier Law Firm in Delhi NCR specializing in Corporate Litigation, Criminal Defense, Civil Law, Arbitration, and Commercial Disputes.", "url" => home_url('/'), "telephone" => "+91 89685 60456", "email" => "write@bijlani.in", "image" => home_url('/wp-content/themes/bijlani-theme/assets/images/home-hero.jpg'), "address" => [ "@type" => "PostalAddress", "streetAddress" => "141, Patiala House Courts, New Delhi", "addressLocality" => "New Delhi", "addressRegion" => "Delhi", "postalCode" => "110001", "addressCountry" => "IN" ], "geo" => [ "@type" => "GeoCoordinates", "latitude" => 28.6328, "longitude" => 77.2268 ], "openingHours" => "Mo-Fr 09:00-18:00", "areaServed" => [ ["@type" => "City", "name" => "Delhi"], ["@type" => "City", "name" => "Gurgaon"], ["@type" => "City", "name" => "Noida"], ["@type" => "City", "name" => "Faridabad"], ["@type" => "City", "name" => "Ghaziabad"], ["@type" => "City", "name" => "Mumbai"], ["@type" => "City", "name" => "Bangalore"], ["@type" => "State", "name" => "Delhi"], ["@type" => "State", "name" => "Haryana"], ["@type" => "State", "name" => "Uttar Pradesh"], ["@type" => "Country", "name" => "India"] ], "sameAs" => [ "", "https://www.google.com/maps?q=Advocate+Nilesh+Bijlani&kgmid=/g/11flfrdnn_", "https://www.linkedin.com/company/bijlani-in", "https://twitter.com/bijlani_in" ] ]; } if (is_single()) { $schema = [ "@context" => "https://schema.org", "@type" => "BlogPosting", "headline" => get_the_title(), "image" => get_the_post_thumbnail_url(), "author" => ["@type" => "Person", "name" => get_the_author()], "publisher" => ["@type" => "Organization", "name" => "Bijlani & Co."] ]; } echo '' . "\n"; echo '' . "\n";}add_action('wp_head', 'bijlani_schema_markup');// Add GBP embed to contact page via the_content filter (bypasses KSES iframe stripping)add_filter('the_content', function($content) { if (is_page(13)) { // Contact page PID $gbp_embed = '

Find Us on Google

' . "\n"; $gbp_embed .= '

Visit our Google Business Profile for reviews and directions, or view our office at Patiala House Courts below:

' . "\n"; $gbp_embed .= '' . "\n"; return $content . "\n" . $gbp_embed; } return $content;});/** * 2.5 SEO Title Optimization */// bijlani.in - Remove title-tag AFTER theme adds it, then output manuallyfunction bijlani_fix_title_system() { // Theme registers title-tag at priority 50 - we remove it at 999 remove_theme_support('title-tag');}add_action('after_setup_theme', 'bijlani_fix_title_system', 999);// bijlani.in - Lock SEO titles in DB and force no-cache headers// This bypasses LiteSpeed object cache which holds stale title responses// 1. Prevent caching of SEO-critical pagesfunction bijlani_no_cache_headers() { if (is_page() || is_front_page()) { header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); header('Pragma: no-cache'); }}add_action('send_headers', 'bijlani_no_cache_headers');// 2. Set proper title using wp_insert_post_data filter (modifies before save)function bijlani_save_page_title($data, $postarr) { // Titles are set via our PHP updater scripts (seo-v3.php etc) // This filter ensures title-tag support uses the post_title correctly return $data;}add_filter('wp_insert_post_data', 'bijlani_save_page_title', 10, 2);// Load SEO custom functions (schema, dynamic H1) - bijlani.in SEO updaterrequire_once BIJLANI_THEME_DIR . '/inc/seo-custom.php';/** * 3. Bilingual Toggle Logic (JS-based for comprehensive switching) */function bijlani_bilingual_script() { ?> <script> const translations = { 'hi': { // Navigation 'Home': 'होम', 'Practice Areas': 'कानूनी क्षेत्र', 'The Firm': 'फर्म', 'Insights': 'लेख', 'Playbooks': 'प्लेबुक', 'Contact': 'संपर्क', 'Discuss Your Matter': 'मामले पर चर्चा करें', // UI Components 'Consultation': 'परामर्श', 'Premium Engagement': 'प्रीमियम जुड़ाव', 'Service Enquiry': 'सेवा पूछताछ', 'Read Article': 'लेख पढ़ें', 'Read Analysis': 'विश्लेषण पढ़ें', 'Read Next': 'अगला पढ़ें', 'Unlock Full Access': 'पूरी पहुंच अनलॉक करें', 'Access Guide': 'गाइड एक्सेस करें', 'Access Playbook': 'प्लेबुक एक्सेस करें', 'Access Document': 'दस्तावेज़ एक्सेस करें', 'Download Preview': 'पूर्वावलोकन डाउनलोड करें', 'Verify & Access': 'सत्यापित करें और पहुंचें', 'Contents': 'विषय-सूची', 'Share': 'साझा करें', 'View Full Profile': 'प्रोफ़ाइल देखें', 'View All Playbooks': 'सभी प्लेबुक देखें', 'View all insights': 'सभी लेख देखें', 'Further Reading': 'आगे पढ़ें', 'What\'s Included': 'क्या शामिल है', 'Curated By': 'इनके द्वारा क्यूरेटेड', 'Senior Partner': 'वरिष्ठ भागीदार', 'Lead Counsel': 'मुख्य वकील', 'Strategic Summary': 'रणनीतिक सारांश', 'Key Themes': 'मुख्य विषय', 'Document Highlights': 'दस्तावेज़ की मुख्य विशेषताएं', 'Institutional License': 'संस्थागत लाइसेंस', // 404 Page 'OBJECTION!': 'आपत्ति!', 'Case File Not Found': 'केस फाइल नहीं मिली', 'The evidence you are looking for has been suppressed or moved to another jurisdiction.': 'जिस सबूत की आप तलाश कर रहे हैं उसे दबा दिया गया है या दूसरे अधिकार क्षेत्र में ले जाया गया है।', 'Return to Chambers': 'चैंबर्स लौटें', // Legal Disclaimer 'Compliance Notice': 'अनुपालन सूचना', 'I Accept & Enter': 'मैं स्वीकार करता हूँ और प्रवेश करता हूँ', 'Exit Site': 'साइट छोड़ें', // Home Sections 'Est. New Delhi': 'स्था. नई दिल्ली', 'Strategic Counsel for': 'के लिए रणनीतिक परामर्श', 'Complex Litigation': 'जटिल मुकदमेबाजी', 'Navigating high-stakes legal challenges with authority, precision, and unwavering dedication to the Black Robe.': 'अधिकार, सटीकता और काले लबादे के प्रति अटूट समर्पण के साथ उच्च-जोखिम वाली कानूनी चुनौतियों को पार करना।', 'About the firm': 'फर्म के बारे में', 'Defending Rights, Defining Justice': 'अधिकारों की रक्षा, न्याय की परिभाषा', 'Established in New Delhi with pan-India capabilities,': 'नई दिल्ली में स्थापित, अखिल भारतीय क्षमताओं के साथ,', 'Bijlani.in': 'बिजलानी.इन', 'stands at the intersection of tradition and modern jurisprudence. Our philosophy is rooted in a rigorous understanding of the law, meticulous preparation, and an aggressive pursuit of our clients\' interests in complex litigation environments. We don\'t just interpret the law; we leverage it to build fortresses around our clients\' rights.': 'परंपरा और आधुनिक न्यायशास्त्र के चौराहे पर खड़ा है। हमारा दर्शन कानून की कठोर समझ, सावधानीपूर्वक तैयारी और जटिल मुकदमेबाजी के वातावरण में अपने ग्राहकों के हितों की आक्रामक खोज पर आधारित है। हम सिर्फ कानून की व्याख्या नहीं करते; हम अपने ग्राहकों के अधिकारों के चारों ओर किले बनाने के लिए इसका लाभ उठाते हैं।', 'Managing Partner': 'प्रबंध भागीदार', 'Our History': 'हमारा इतिहास', 'Milestones of Excellence': 'उत्कृष्टता के मील के पत्थर', 'Tracing the path of legal victories and firm expansion over recent years of dedicated practice.': 'समर्पित अभ्यास के हाल के वर्षों में कानूनी जीत और फर्म विस्तार के पथ का पता लगाना।', 'Establishment': 'स्थापना', 'Founded by Nilesh Bijlani in New Delhi, focusing initially on high-profile criminal defense cases.': 'नई दिल्ली में निलेश बिजलानी द्वारा स्थापित, शुरू में हाई-प्रोफाइल आपराधिक बचाव मामलों पर ध्यान केंद्रित किया गया।', 'Corporate Pivot': 'कॉर्पोरेट धुरी', 'Expanded practice to include corporate litigation and white-collar crime defense on a national scale.': 'राष्ट्रीय स्तर पर कॉर्पोरेट मुकदमेबाजी और सफेदपोश अपराध रक्षा को शामिल करने के लिए अभ्यास का विस्तार किया।', 'Landmark Verdict': 'ऐतिहासिक फैसला', 'Secured a precedent-setting judgment in the Supreme Court concerning digital privacy and AI governance.': 'डिजिटल गोपनीयता और एआई शासन के संबंध में सुप्रीम कोर्ट में एक मिसाल कायम करने वाला फैसला सुरक्षित किया।', 'Visionary Aid': 'दूरदर्शी सहायता', 'Launching the \'Justice for All\' initiative: providing helpful legal aid and pro-bono support to the needy.': '\'सभी के लिए न्याय\' पहल की शुरुआत: जरूरतमंदों को मददगार कानूनी सहायता और प्रो-बोनो सहायता प्रदान करना।', 'Our Expertise': 'हमारी विशेषज्ञता', 'Comprehensive legal solutions across multiple disciplines.': 'कई विषयों में व्यापक कानूनी समाधान।', 'Corporate Law': 'कॉर्पोरेट कानून', 'Structuring mergers, compliance, and handling high-stakes commercial disputes.': 'विलय, अनुपालन, और उच्च-दांव वाले वाणिज्यिक विवादों को संभालना।', 'Criminal Law': 'आपराधिक कानून', 'Relentless defense in white-collar crimes, bail matters, and complex trials.': 'सफेदपोश अपराधों, जमानत मामलों और जटिल परीक्षणों में लगातार बचाव।', 'Civil Law': 'सिविल कानून', 'Expert handling of civil disputes, property matters, and contract enforcement.': 'नागरिक विवादों, संपत्ति मामलों और अनुबंध प्रवर्तन का विशेषज्ञ संचालन।', 'Family Law': 'पारिवारिक कानून', 'Sensitive handling of matrimonial disputes, custody, and inheritance matters.': 'वैवाहिक विवादों, हिरासत और विरासत के मामलों का संवेदनशील संचालन।', 'IP Law': 'आईपी कानून', 'Protecting intellectual assets including patents, trademarks, and copyrights.': 'पेटेंट, ट्रेडमार्क और कॉपीराइट सहित बौद्धिक संपदा की रक्षा करना।', 'Cyber Law': 'साइबर कानून', 'Addressing data privacy, digital fraud, and technology-related disputes.': 'डेटा गोपनीयता, डिजिटल धोखाधड़ी और प्रौद्योगिकी से संबंधित विवादों को संबोधित करना।', 'Environmental Law': 'पर्यावरण कानून', 'Compliance and litigation regarding environmental regulations and sustainability.': 'पर्यावरण नियमों और स्थिरता के संबंध में अनुपालन और मुकदमेबाजी।', 'Employment & Labour': 'रोजगार और श्रम', 'Workplace policies, dispute resolution, and employee rights advocacy.': 'कार्यस्थल नीतियां, विवाद समाधान, और कर्मचारी अधिकार वकालत।', 'Estate Planning': 'एस्टेट योजना', 'Comprehensive will drafting, trust formation, and succession planning.': 'व्यापक वसीयत का मसौदा तैयार करना, ट्रस्ट का गठन, और उत्तराधिकार योजना।', 'Constitutional Law': 'संवैधानिक कानून', 'Writ petitions and public interest litigations safeguarding fundamental rights.': 'मौलिक अधिकारों की रक्षा करने वाली रिट याचिकाएं और जनहित याचिकाएं।', // The Firm Page 'Who We Are': 'हम कौन हैं', 'Architects of': 'के रणनीतिकार', 'Legal Strategy': 'कानूनी रणनीति', 'We are more than just legal representatives; we are strategic partners in your most critical battles. Our firm is built on the pillars of integrity, precision, and unwavering advocacy.': 'हम सिर्फ कानूनी प्रतिनिधि नहीं हैं; हम आपकी सबसे महत्वपूर्ण लड़ाई में रणनीतिक भागीदार हैं। हमारी फर्म अखंडता, निष्पक्षता और अटूट वकालत के स्तंभों पर बनी है।', 'Scroll to Explore Our Philosophy': 'हमारा दर्शन जानने के लिए स्क्रॉल करें', 'Core Philosophy': 'मूल दर्शन', 'Precision': 'सटीकता', 'Legality is in the details. We dissect every case with forensic precision, identifying leverage points that others miss.': 'कानून विवरण में है। हम हर मामले का फोरेंसिक सटीकता के साथ विश्लेषण करते हैं, उन बिंदुओं की पहचान करते हैं जो अन्य लोग छोड़ देते हैं।', 'Integrity': 'अखंडता', 'Trust is our currency. We operate with absolute transparency and ethical fortitude, safeguarding our clients\' reputation alongside their interests.': 'विश्वास हमारी मुद्रा है। हम पूर्ण पारदर्शिता और नैतिक दृढ़ता के साथ काम करते हैं, अपने ग्राहकों के हितों के साथ-साथ उनकी प्रतिष्ठा की भी रक्षा करते हैं।', 'Tenacity': 'दृढ़ता', 'We do not yield. In the face of adversity, our resolve only strengthens. We pursue every legal avenue to secure the desired outcome.': 'हम झुकते नहीं हैं। प्रतिकूल परिस्थितियों में हमारा संकल्प और मजबूत होता है। हम वांछित परिणाम सुनिश्चित करने के लिए हर कानूनी रास्ते का पीछा करते हैं।', 'Our Journey': 'हमारी यात्रा', 'The Foundation': 'नींव', 'Founded by Nilesh Bijlani with a vision to create a boutique litigation firm that rivals the giants in capability while exceeding them in agility.': 'निलेश बिजलानी द्वारा स्थापित, एक बुटीक लितिगेशन फर्म बनाने की दृष्टि के साथ जो क्षमता में दिग्गजों को टक्कर दे और चपलता में उनसे आगे निकल जाए।', 'National Expansion': 'राष्ट्रीय विस्तार', 'Expanded operations to major judicial centers across India, handling landmark cases in the Supreme Court and establishing a reputation for appellate excellence.': 'भारत भर के प्रमुख न्यायिक केंद्रों में परिचालन का विस्तार किया, सुप्रीम कोर्ट में ऐतिहासिक मामलों को संभाला और अपीलीय उत्कृष्टता के लिए प्रतिष्ठा स्थापित की।', 'Landmark Verdicts': 'ऐतिहासिक फैसले', 'Secured precedent-setting judgments in specialized litigation sectors including cyber law and cross-border disputes.': 'साइबर कानून और सीमा पार विवादों सहित विशेष मुकदमेबाजी क्षेत्रों में मिसाल कायम करने वाले फैसले सुरक्षित किए।', 'Launching the \'Justice for All\' initiative: providing helpful legal aid and pro-bono support to the needy, ensuring high-quality defense for those who need it most.': '\'सभी के लिए न्याय\' पहल की शुरुआत: जरूरतमंदों को मददगार कानूनी सहायता और प्रो-बोनो सहायता प्रदान करना, जिन्हें इसकी सबसे अधिक आवश्यकता है, उनके लिए उच्च गुणवत्ता वाली रक्षा सुनिश्चित करना।', 'The Counsel\'s Perspective': 'वकील का दृष्टिकोण', 'In the pursuit of justice,': 'न्याय की खोज में,', 'neutrality': 'तटस्थता', 'is not an option.': 'कोई विकल्प नहीं है।', 'For over Six years, the Bijlani standard has been defined by a simple, unyielding principle: every client deserves an advocate who doesn\'t just represent them, but stands with them in the breach.': 'छह वर्षों से अधिक समय से, बिजलानी मानक को एक सरल, अडिग सिद्धांत द्वारा परिभाषित किया गया है: प्रत्येक मुवक्किल एक ऐसे वकील का हकदार है जो न केवल उनका प्रतिनिधित्व करे, बल्कि मुश्किल समय में उनके साथ खड़ा रहे।', 'We have navigated the most complex judicial corridors of this nation, not by following the path of least resistance, but by carving out strategies that prioritize institutional integrity and client victory above all else.': 'हमने इस देश के सबसे जटिल न्यायिक गलियारों को पार किया है, सबसे आसान रास्ते पर चलकर नहीं, बल्कि ऐसी रणनीतियाँ बनाकर जो संस्थागत अखंडता और मुवक्किल की जीत को सबसे ऊपर रखती हैं।', 'Our firm is not merely a service provider; it is an unshakeable fortress built on precision and ethical fortitude.': 'हमारी फर्म केवल एक सेवा प्रदाता नहीं है; यह सटीकता और नैतिक दृढ़ता पर बना एक अटूट किला है।', 'Nilesh Bijlani': 'निलेश बिजलानी', 'Senior Advocate • Chief Counsel': 'वरिष्ठ अधिवक्ता • मुख्य वकील', // SEO & Common words 'released': 'जारी किया गया', 'min read': 'मिनट पढ़ने का समय' } }; function setLanguage(lang) { localStorage.setItem('bijlani_lang', lang); document.documentElement.lang = lang; if (lang === 'en') { location.reload(); } else { updateUI(); } } function updateUI() { const lang = localStorage.getItem('bijlani_lang') || 'en'; if (lang === 'en') { // Ensure English content is visible if we are reloading or just switching return; } const dict = translations[lang]; if (!dict) return; // 1. Text Node Translation (Robust Walker) const walk = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false); let node; while(node = walk.nextNode()) { const raw = node.nodeValue; // Skip empty or whitespace-only nodes if (!raw || !raw.trim()) continue; const trimmed = raw.trim(); const normalized = raw.replace(/\s+/g, ' ').trim(); // Collapses newlines/spaces // 1. Direct Match (Exact Trimmed) if (dict[trimmed]) { node.nodeValue = raw.replace(trimmed, dict[trimmed]); continue; } // 2. Normalized Match (Handles HTML source formatting/newlines) if (dict[normalized]) { // We replace the original text but try to preserve surrounding whitespace if possible, // but typically for whole-node replacement, just replacing the value is fine. node.nodeValue = dict[normalized]; continue; } // 3. Case-Insensitive Match let found = false; for (const key in dict) { if (key.toLowerCase() === trimmed.toLowerCase() || key.toLowerCase() === normalized.toLowerCase()) { node.nodeValue = dict[key]; found = true; break; } } if (found) continue; // Substring replacement for key phrases (careful with this) // Only for specific high-value targets like "Read ... Min" if (trimmed.includes('Min Read') && dict['min read']) { node.nodeValue = raw.replace('Min Read', dict['min read']); } } // 2. Placeholder Translation document.querySelectorAll('input, textarea').forEach(el => { const ph = el.getAttribute('placeholder'); if (ph && dict[ph.trim()]) { el.setAttribute('placeholder', dict[ph.trim()]); } }); // 3. Highlight active button document.querySelectorAll('.lang-btn-en, .lang-btn-hi').forEach(btn => { btn.classList.remove('text-primary'); if (btn.classList.contains('lang-btn-' + lang)) { btn.classList.add('text-primary'); } }); // 4. Force specific element updates by ID if needed const firmLink = document.querySelector('.nav-link-firm'); if (firmLink && dict['The Firm']) firmLink.textContent = dict['The Firm']; const insightsLink = document.querySelector('.nav-link-insights'); if (insightsLink && dict['Insights']) insightsLink.textContent = dict['Insights']; const playbooksLink = document.querySelector('.nav-link-playbooks'); if (playbooksLink && dict['Playbooks']) playbooksLink.textContent = dict['Playbooks']; const contactLink = document.querySelector('.nav-link-contact'); if (contactLink && dict['Contact']) contactLink.textContent = dict['Contact']; } document.addEventListener('DOMContentLoaded', () => { const savedLang = localStorage.getItem('bijlani_lang'); if (savedLang === 'hi') { // Use a mutation observer to handle dynamic content const observer = new MutationObserver((mutations) => { updateUI(); }); observer.observe(document.body, { childList: true, subtree: true }); updateUI(); } }); </script> <?php}add_action('wp_footer', 'bijlani_bilingual_script');/** * 4. Robots.txt Optimization *//** * Fallback menu - used when no menu is assigned to the Primary location * Matches JS-selector expectations (nav-link-firm, nav-link-insights, etc.) */ /** * Fix nav menu item labels - force short clean labels */ function bijlani_fix_menu_labels($items, $args) { if ($args->theme_location !== 'primary') { return $items; } foreach ($items as $item) { if (stripos($item->url, 'practice-area') !== false || stripos($item->title, 'Corporate Lawyers') !== false) { $item->title = 'Practice Areas'; } elseif (stripos($item->url, 'the-firm') !== false) { $item->title = 'The Firm'; } elseif (stripos($item->url, 'insights') !== false) { $item->title = 'Insights'; } elseif (stripos($item->url, 'contact') !== false) { $item->title = 'Contact'; } } return $items; } /** * Fix nav menu item labels - add Home as first item and clean labels */ function bijlani_fix_menu_labels($items, $args) { if ($args->theme_location !== 'primary') { return $items; } // Add Home as first item $home_item = new stdClass(); $home_item->title = 'Home'; $home_item->url = home_url('/'); $home_item->classes = array('nav-link-home', 'menu-item'); array_unshift($items, $home_item); // Clean up verbose labels foreach ($items as $item) { if (stripos($item->url, 'practice-area') !== false || stripos($item->title, 'Corporate Lawyers') !== false) { $item->title = 'Practice Areas'; } elseif (stripos($item->url, 'the-firm') !== false) { $item->title = 'The Firm'; } elseif (stripos($item->url, 'insights') !== false) { $item->title = 'Insights'; } elseif (stripos($item->url, 'contact') !== false) { $item->title = 'Contact'; } } return $items; } add_filter('wp_nav_menu_objects', 'bijlani_fix_menu_labels', 10, 2); function bijlani_fallback_menu() { $items = array( array('title' => 'Home', 'url' => home_url('/'), 'class' => ''), array('title' => 'Practice Areas', 'url' => home_url('/practice-area/'), 'class' => ''), array('title' => 'The Firm', 'url' => home_url('/the-firm/'), 'class' => 'nav-link-firm'), array('title' => 'Playbooks', 'url' => home_url('/playbooks/'), 'class' => 'nav-link-playbooks'), array('title' => 'Insights', 'url' => home_url('/insights/'), 'class' => 'nav-link-insights'), array('title' => 'Contact', 'url' => home_url('/contact/'), 'class' => 'nav-link-contact'), ); echo '<ul class="flex items-center gap-8">'; foreach ($items as $item) { $active_class = (strpos($_SERVER["REQUEST_URI"], $item["url"]) !== false) ? 'text-primary' : 'text-gray-300 hover:text-white'; $class_attr = $item["class"] ? ' class="' . esc_attr($item["class"] . ' ' . $active_class) . '"' : ' class="' . esc_attr($active_class) . '"'; echo '<li><a href="' . esc_url($item["url"]) . '"' . $class_attr . '>' . esc_html($item["title"]) . '</a></li>'; } echo '</ul>';}function bijlani_robots_txt($output, $public) { if ($public) { $output .= "User-agent: *\n"; $output .= "Disallow: /wp-admin/\n"; $output .= "Allow: /wp-admin/admin-ajax.php\n"; $output .= "Sitemap: " . home_url('/sitemap.xml') . "\n"; } return $output;}add_filter('robots_txt', 'bijlani_robots_txt', 10, 2);/** * 5. Simple XML Sitemap Generator */function bijlani_generate_sitemap() { if (isset($_GET['sitemap']) && $_GET['sitemap'] == '1') { header('Content-Type: application/xml; charset=utf-8'); echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; // Home echo '<url><loc>' . home_url('/') . '</loc><priority>1.0</priority></url>' . "\n"; // Posts & Pages $query = new WP_Query(['post_type' => ['post', 'page', 'legal_guide', 'legal_playbook', 'legal_template'], 'posts_per_page' => -1]); while($query->have_posts()) { $query->the_post(); echo '<url><loc>' . get_permalink() . '</loc><lastmod>' . get_the_modified_date('c') . '</lastmod><priority>0.8</priority></url>' . "\n"; } echo '</urlset>'; exit; }}add_action('init', 'bijlani_generate_sitemap');/** * AJAX handler for purchases */function bijlani_ajax_purchase_handler() { check_ajax_referer('bijlani_purchase_nonce', 'nonce'); // Get form data $name = sanitize_text_field($_POST['name']); $email = sanitize_email($_POST['email']); $phone = sanitize_text_field($_POST['phone']); $company = sanitize_text_field($_POST['company']); $item_id = intval($_POST['item_id']); $item_type = sanitize_text_field($_POST['item_type']); // Get item details $item = get_post($item_id); $price = get_post_meta($item_id, '_bijlani_price', true); $download_url = get_post_meta($item_id, '_bijlani_download_file', true); // Save to database global $wpdb; $table_name = $wpdb->prefix . 'bijlani_purchases'; $wpdb->insert( $table_name, array( 'name' => $name, 'email' => $email, 'phone' => $phone, 'company' => $company, 'item_id' => $item_id, 'item_type' => $item_type, 'item_title' => $item->post_title, 'price' => $price, 'created_at' => current_time('mysql'), ), array('%s', '%s', '%s', '%s', '%d', '%s', '%s', '%s', '%s') ); // Send email to buyer $to_buyer = $email; $subject_buyer = 'Your Download from Bijlani.in - ' . $item->post_title; $message_buyer = sprintf( "Dear %s,\n\nThank you for your interest in our legal resources.\n\nYou have successfully accessed: %s\n\nDownload Link: %s\n\nBest regards,\nBijlani.in Team", $name, $item->post_title, home_url('/download/?file=' . base64_encode($download_url) . '&token=' . wp_create_nonce('download_' . $item_id)) ); wp_mail($to_buyer, $subject_buyer, $message_buyer); // Send email to admin $admin_email = get_option('admin_email'); $subject_admin = 'New Download Request - ' . $item->post_title; $message_admin = sprintf( "New download request received:\n\nName: %s\nEmail: %s\nPhone: %s\nCompany: %s\nItem: %s\nType: %s\nPrice: ₹%s\nTime: %s", $name, $email, $phone, $company, $item->post_title, $item_type, $price ?: 'Free', current_time('mysql') ); wp_mail($admin_email, $subject_admin, $message_admin); wp_send_json_success(array( 'message' => 'Thank you! Check your email for the download link.', 'download_url' => $download_url, ));}add_action('wp_ajax_bijlani_purchase', 'bijlani_ajax_purchase_handler');add_action('wp_ajax_nopriv_bijlani_purchase', 'bijlani_ajax_purchase_handler');/** * Create purchases table on theme activation */function bijlani_create_purchases_table() { global $wpdb; $table_name = $wpdb->prefix . 'bijlani_purchases'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE IF NOT EXISTS $table_name ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, email varchar(255) NOT NULL, phone varchar(50), company varchar(255), item_id bigint(20) NOT NULL, item_type varchar(50) NOT NULL, item_title varchar(255) NOT NULL, price varchar(50), created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY email (email), KEY item_id (item_id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql);}add_action('after_switch_theme', 'bijlani_create_purchases_table');/** * Add admin menu for purchases */function bijlani_admin_menu() { add_menu_page( 'Purchases', 'Purchases', 'manage_options', 'bijlani-purchases', 'bijlani_purchases_page', 'dashicons-cart', 30 );}add_action('admin_menu', 'bijlani_admin_menu');/** * Purchases admin page */function bijlani_purchases_page() { global $wpdb; $table_name = $wpdb->prefix . 'bijlani_purchases'; $purchases = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC LIMIT 100"); ?> <div class="wrap"> <h1>Download Requests / Purchases</h1> <table class="wp-list-table widefat fixed striped"> <thead> <tr> <th>Date</th> <th>Name</th> <th>Email</th> <th>Phone</th> <th>Company</th> <th>Item</th> <th>Type</th> <th>Price</th> </tr> </thead> <tbody> <tr><td colspan="8">No purchases yet.</td></tr> </tbody> </table> </div> <?php}/** * Data Seeder for Insights Section * Creates sample posts for Playbooks, Guides, and Templates if they don't exist. */function bijlani_seed_insights_data() { if (get_option('bijlani_data_seeded_v3')) { return; } // 1. Create Legal Guides & Playbooks $resources = array( array( 'title' => 'Cross-Border Enforcement Playbook', 'content' => 'This playbook provides a detailed analysis of the legal frameworks for enforcing foreign judgments and arbitral awards in multi-jurisdictional disputes.', 'excerpt' => 'A strategic guide on identifying and enforcing judgments across multiple jurisdictions.', 'type' => 'legal_playbook', 'price' => '3,250', 'version' => '4.2', 'color' => '#D4AF37', 'area' => 'International Litigation' ), array( 'title' => 'AI Governance & Risk Handbook', 'content' => 'This guide outlines a comprehensive governance framework for institutional legal departments managing AI risks.', 'excerpt' => 'Risk management and algorithmic transparency for Fortune 500 legal departments.', 'type' => 'legal_guide', 'version' => '1.5', 'color' => '#1e3a8a', 'area' => 'Cyber Law' ), array( 'title' => 'M&A Due Diligence Framework', 'content' => 'A comprehensive, 150-point checklist for managing complex mergers and acquisitions.', 'excerpt' => 'Institutional-grade due diligence for complex transactional mandates.', 'type' => 'legal_playbook', 'price' => '4,500', 'version' => '2.0', 'color' => '#111', 'area' => 'Corporate Law' ), array( 'title' => 'Intellectual Property Strategy 2026', 'content' => 'Protecting intangible assets in the age of generative AI and global digital distribution.', 'excerpt' => 'Strategic IP positioning for high-tech ventures.', 'type' => 'legal_playbook', 'price' => '2,900', 'version' => '1.0', 'color' => '#b45309', 'area' => 'Intellectual Property' ), array( 'title' => 'White Collar Defense Protocol', 'content' => 'Internal investigation standards and defense strategies for corporate regulatory compliance.', 'excerpt' => 'Advanced defense protocols for executive and corporate liability.', 'type' => 'legal_guide', 'version' => '3.0', 'color' => '#121212', 'area' => 'Criminal Litigation' ), array( 'title' => 'Real Estate Due Diligence 101', 'content' => 'Essential property law checks for commercial acquisitions in India.', 'excerpt' => 'Compliance and verification for large scale land acquisitions.', 'type' => 'legal_guide', 'version' => '2.1', 'color' => '#3f6245', 'area' => 'Civil Law' ) ); foreach ($resources as $r) { $post_id = wp_insert_post(array( 'post_title' => $r['title'], 'post_content' => $r['content'], 'post_excerpt' => $r['excerpt'], 'post_status' => 'publish', 'post_type' => $r['type'], )); if ($post_id) { if (isset($r['price'])) update_post_meta($post_id, '_bijlani_price', $r['price']); if (isset($r['version'])) update_post_meta($post_id, '_playbook_version', $r['version']); if (isset($r['color'])) update_post_meta($post_id, '_guide_color', $r['color']); wp_set_object_terms($post_id, $r['area'], 'practice_area'); } } // 2. Create Legal Templates $templates = array( array('title' => 'Mutual Non-Disclosure Agreement', 'excerpt' => 'Standardized 2-way NDA.', 'icon' => 'gavel', 'price' => '0', 'free' => '1'), array('title' => 'Master Services Agreement', 'excerpt' => 'Comprehensive MSA for tech.', 'icon' => 'handshake', 'price' => '1,850', 'free' => '0'), array('title' => 'Employment Offer Template', 'excerpt' => 'Pro-employer offer letter.', 'icon' => 'badge', 'price' => '950', 'free' => '0'), array('title' => 'Shareholders Agreement', 'excerpt' => 'Balanced rights for founders/investors.', 'icon' => 'corporate_fare', 'price' => '2,500', 'free' => '0'), array('title' => 'Software License Agreement', 'excerpt' => 'SaaS and on-prem licensing clauses.', 'icon' => 'code', 'price' => '1,200', 'free' => '0'), array('title' => 'Privacy Policy (GDPR/DPDP)', 'excerpt' => '2026 compliant data policy.', 'icon' => 'security', 'price' => '0', 'free' => '1') ); foreach ($templates as $t) { $post_id = wp_insert_post(array( 'post_title' => $t['title'], 'post_excerpt' => $t['excerpt'], 'post_status' => 'publish', 'post_type' => 'legal_template', )); if ($post_id) { update_post_meta($post_id, '_resource_icon', $t['icon']); update_post_meta($post_id, '_bijlani_price', $t['price']); update_post_meta($post_id, '_bijlani_is_free', $t['free']); } } update_option('bijlani_data_seeded_v3', true);}add_action('init', 'bijlani_seed_insights_data');/** * Helper to render service specific enquiry modals */function bijlani_render_service_modals() { $recaptcha_site_key = get_theme_mod('bijlani_recaptcha_site_key', ''); ?> <div id="service-enquiry-modal" class="fixed inset-0 z-[1000] flex items-center justify-center bg-black/90 backdrop-blur-md hidden p-4 overflow-y-auto"> <div class="max-w-xl w-full bg-[#121212] border border-primary/20 p-8 md:p-10 shadow-2xl relative my-8"> <button id="close-enquiry-modal" class="absolute top-6 right-6 text-gray-500 hover:text-white"> <span class="material-symbols-outlined">close</span> </button> <div class="mb-8"> <span class="text-primary font-mono text-[10px] uppercase tracking-[0.4em] mb-2 block">Premium Engagement</span> <h3 id="enquiry-service-title" class="text-2xl font-serif font-bold text-white italic">Service Enquiry</h3> </div> <form id="service-enquiry-form" class="space-y-5"> <input type="hidden" name="service_name" id="hidden-service-name"> <div class="grid grid-cols-2 gap-4"> <input type="text" name="full_name" placeholder="Full Name" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none" required> <input type="email" name="email" placeholder="Work Email" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none" required> </div> <input type="text" name="organization" placeholder="Organization / Entity" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none"> <input type="tel" name="phone" placeholder="Contact Number" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none"> <!-- Service-specific question --> <div id="service-specific-question" class="hidden"> <label class="text-[10px] text-gray-500 uppercase tracking-widest mb-2 block font-mono" id="service-question-label"></label> <select name="service_specific_answer" id="service-specific-select" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none appearance-none"> <option value="">Select an option...</option> </select> </div> <textarea name="requirements" id="requirements-textarea" placeholder="Briefly describe your requirements..." rows="3" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none"></textarea> <button type="submit" class="w-full bg-primary text-black text-[10px] font-black uppercase tracking-[0.3em] py-5 hover:bg-white transition-all shadow-xl"> Submit Enquiry <span class="material-symbols-outlined ml-2 !text-base">verified</span> </button> </form> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { const modal = document.getElementById('service-enquiry-modal'); const closeBtn = document.getElementById('close-enquiry-modal'); const form = document.getElementById('service-enquiry-form'); const triggers = document.querySelectorAll('.service-enquiry-trigger'); const specificQuestionDiv = document.getElementById('service-specific-question'); const specificQuestionLabel = document.getElementById('service-question-label'); const specificSelect = document.getElementById('service-specific-select'); const requirementsTextarea = document.getElementById('requirements-textarea'); // Service-specific questions and options const serviceQuestions = { 'Corporate & Commercial': { label: 'Type of Corporate Matter', options: ['M&A Transaction', 'Due Diligence', 'Joint Venture', 'Corporate Restructuring', 'Regulatory Compliance', 'Commercial Contract', 'Other'], placeholder: 'Please describe the transaction value, timeline, and any specific concerns...' }, 'Dispute Resolution': { label: 'Nature of Dispute', options: ['Commercial Dispute', 'Contractual Breach', 'Recovery Matter', 'Injunction/Urgent Relief', 'Appellate Matter', 'Arbitration', 'Other'], placeholder: 'Please describe the dispute, parties involved, and current status...' }, 'White Collar & Criminal': { label: 'Stage of Matter', options: ['Pre-investigation', 'Investigation Ongoing', 'Arrest/Bail Required', 'Trial Proceedings', 'Appeal', 'Regulatory Inquiry', 'Other'], placeholder: 'Please provide details about the allegations, investigating agency, and any urgent requirements...' }, 'Intellectual Property': { label: 'Type of IP Protection', options: ['Trademark Registration', 'Patent Filing', 'Copyright Protection', 'IP Infringement', 'IP Licensing', 'Trade Secret', 'Other'], placeholder: 'Please describe the intellectual property, jurisdiction, and any existing registrations...' }, 'Cyber & Technology': { label: 'Nature of Concern', options: ['Data Privacy Compliance', 'Data Breach Response', 'Fintech Regulations', 'AI/ML Governance', 'Cybersecurity Incident', 'IT Contracts', 'Other'], placeholder: 'Please describe the technology involved, compliance requirements, or incident details...' }, 'Civil & Property': { label: 'Type of Property Matter', options: ['Land/Title Dispute', 'Landlord-Tenant', 'Real Estate Transaction', 'Partition/Family Property', 'Construction Dispute', 'Injunction', 'Other'], placeholder: 'Please describe the property location, parties involved, and nature of dispute...' }, 'International Arbitration': { label: 'Arbitration Context', options: ['ICC Arbitration', 'SIAC Arbitration', 'Ad-hoc Arbitration', 'Investment Treaty', 'Enforcement of Award', 'Seat/Venue Selection', 'Other'], placeholder: 'Please describe the jurisdictions involved, contract value, and nature of dispute...' } }; triggers.forEach(trigger => { trigger.addEventListener('click', (e) => { e.preventDefault(); const service = trigger.getAttribute('data-service') || 'General Litigation'; document.getElementById('enquiry-service-title').innerText = `Enquiry: ${service}`; document.getElementById('hidden-service-name').value = service; // Set service-specific question const config = serviceQuestions[service]; if (config) { specificQuestionLabel.innerText = config.label; specificSelect.innerHTML = '<option value="">Select an option...</option>' + config.options.map(opt => `<option value="${opt}">${opt}</option>`).join(''); requirementsTextarea.placeholder = config.placeholder; specificQuestionDiv.classList.remove('hidden'); } else { specificQuestionDiv.classList.add('hidden'); requirementsTextarea.placeholder = 'Briefly describe your legal requirements...'; } modal.classList.remove('hidden'); document.body.style.overflow = 'hidden'; }); }); if (closeBtn) { closeBtn.addEventListener('click', () => { modal.classList.add('hidden'); document.body.style.overflow = ''; }); } // Close on overlay click modal.addEventListener('click', (e) => { if (e.target === modal) { modal.classList.add('hidden'); document.body.style.overflow = ''; } }); if (form) { form.addEventListener('submit', (e) => { e.preventDefault(); const btn = form.querySelector('button[type="submit"]'); const originalHTML = btn.innerHTML; btn.innerHTML = 'Transmitting...'; btn.disabled = true; setTimeout(() => { btn.classList.replace('bg-primary', 'bg-green-600'); btn.innerHTML = '<span class="material-symbols-outlined mr-2">check_circle</span> Enquiry Submitted!'; setTimeout(() => { alert('Your enquiry has been transmitted successfully. Our specialized counsel will contact you within 24 hours.'); modal.classList.add('hidden'); document.body.style.overflow = ''; btn.disabled = false; btn.innerHTML = originalHTML; btn.classList.replace('bg-green-600', 'bg-primary'); form.reset(); }, 1500); }, 2000); }); } }); </script> <?php}add_action('wp_footer', 'bijlani_render_service_modals');/** * Global Access Modal for Downloads * Triggered by elements with class 'access-modal-trigger' */function bijlani_render_access_modal() { ?> <div id="access-modal" class="fixed inset-0 z-[1000] flex items-center justify-center bg-black/95 backdrop-blur-xl hidden p-4"> <div class="max-w-lg w-full bg-[#0A0A0A] border border-primary/30 p-8 md:p-12 shadow-[0_50px_100px_-20px_rgba(0,0,0,1)] relative overflow-hidden"> <div class="absolute top-0 left-0 w-full h-1 bg-primary"></div> <button id="close-access-modal" class="absolute top-6 right-6 text-gray-500 hover:text-white"> <span class="material-symbols-outlined">close</span> </button> <div class="flex items-center gap-4 mb-8"> <span class="material-symbols-outlined text-primary text-3xl">lock_open</span> <div> <h2 id="access-modal-title" class="text-2xl font-serif font-bold text-white italic">Access Resource</h2> <p class="text-[10px] text-gray-600 font-mono uppercase tracking-widest">Institutional Verification</p> </div> </div> <form id="access-modal-form" class="space-y-5"> <input type="hidden" name="resource_name" id="hidden-resource-name"> <div class="grid grid-cols-2 gap-4"> <input type="text" name="first_name" placeholder="First Name" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none" required> <input type="text" name="last_name" placeholder="Last Name" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none" required> </div> <input type="email" name="email" placeholder="Work Email Address" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none" required> <select name="role" class="w-full bg-black border border-gray-800 text-white text-xs px-4 py-3.5 focus:border-primary/50 transition-all outline-none appearance-none"> <option value="">Select Your Role</option> <option>General Counsel</option> <option>Corporate Secretary</option> <option>Legal Operations</option> <option>Founder / CEO</option> <option>Legal Professional</option> </select> <button type="submit" class="w-full bg-primary text-black text-[10px] font-black uppercase tracking-[0.3em] py-5 hover:bg-white transition-all shadow-2xl"> Verify & Download <span class="material-symbols-outlined ml-2 !text-base">verified_user</span> </button> </form> <p class="text-[8px] text-gray-700 text-center mt-8 uppercase tracking-[0.2em] font-mono"> Private Trans. Secured by Bijlani Intelligence Network </p> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { const modal = document.getElementById('access-modal'); const closeBtn = document.getElementById('close-access-modal'); const form = document.getElementById('access-modal-form'); const triggers = document.querySelectorAll('.access-modal-trigger'); triggers.forEach(trigger => { trigger.addEventListener('click', (e) => { e.preventDefault(); const resource = trigger.getAttribute('data-resource') || 'Legal Document'; document.getElementById('access-modal-title').innerText = resource; document.getElementById('hidden-resource-name').value = resource; modal.classList.remove('hidden'); document.body.style.overflow = 'hidden'; }); }); if (closeBtn) { closeBtn.addEventListener('click', () => { modal.classList.add('hidden'); document.body.style.overflow = ''; }); } // Close on overlay click modal.addEventListener('click', (e) => { if (e.target === modal) { modal.classList.add('hidden'); document.body.style.overflow = ''; } }); if (form) { form.addEventListener('submit', (e) => { e.preventDefault(); const btn = form.querySelector('button'); const originalHTML = btn.innerHTML; btn.innerHTML = 'Verifying Credentials...'; btn.disabled = true; setTimeout(() => { btn.classList.replace('bg-primary', 'bg-green-600'); btn.classList.replace('text-black', 'text-white'); btn.innerHTML = '<span class="material-symbols-outlined mr-2">check_circle</span> Access Granted!'; setTimeout(() => { alert('Institutional Access Granted. Your download will begin shortly.'); modal.classList.add('hidden'); document.body.style.overflow = ''; btn.disabled = false; btn.innerHTML = originalHTML; btn.classList.replace('bg-green-600', 'bg-primary'); btn.classList.replace('text-white', 'text-black'); form.reset(); }, 1500); }, 2000); }); } }); </script> <?php}add_action('wp_footer', 'bijlani_render_access_modal');/** * Seed Blog Posts for Insights */function bijlani_seed_blog_posts() { if (get_option('bijlani_blog_seeded_v1')) { return; } $posts = array( array( 'title' => 'The Evolution of Corporate Liability in the Age of AI', 'content' => '<p>The rapid adoption of artificial intelligence across enterprise functions has created a new frontier for corporate liability. This analysis examines how courts are beginning to interpret algorithmic accountability and what this means for executive responsibility.</p><p>As LLM-driven tools become integrated into legal operations, compliance, and client management, boards must understand the emerging frameworks for liability when automated systems fail or produce biased outcomes.</p>', 'excerpt' => 'Analyzing the shift in precedent regarding algorithmic accountability and executive responsibility.', 'category' => 'Litigation' ), array( 'title' => 'Hidden Risks in Cross-Border M&A Transactions', 'content' => '<p>Cross-border acquisitions present unique regulatory challenges that domestic transactions rarely encounter. From antitrust clearances in multiple jurisdictions to foreign investment reviews under national security frameworks, the due diligence process must be comprehensive.</p><p>This guide walks stakeholders through the most common pitfalls and provides actionable strategies for identifying regulatory risks before the deal is signed.</p>', 'excerpt' => 'A comprehensive guide for stakeholders on identifying regulatory pitfalls before closing.', 'category' => 'Corporate' ), array( 'title' => 'Shareholder Activism: A Practical Guide for Boards in 2026', 'content' => '<p>The activist investor landscape has evolved dramatically. Today\'s activists are often sophisticated funds with specific governance improvement mandates rather than hostile takeover specialists.</p><p>This practical guide helps board members understand modern activist strategies, respond appropriately to approaches, and implement governance improvements that can preempt activism.</p>', 'excerpt' => 'Activists are creating new opportunities for reform while challenging traditional board structures.', 'category' => 'Governance' ), array( 'title' => 'Private Placement Memorandums: Anatomy of a Dispute', 'content' => '<p>PPMs are essential documents for private fundraising but are notoriously complex. Vague language and inconsistent disclosures frequently lead to multi-million dollar settlements.</p><p>This analysis breaks down the most common PPM drafting failures that lead to litigation and provides best practices for avoiding them.</p>', 'excerpt' => 'How vague language in PPMs leads to multi-million dollar settlements.', 'category' => 'Litigation' ), array( 'title' => 'AI in Contract Review: Use Cases, Risks, and Liability', 'content' => '<p>The legal tech industry has embraced AI-powered contract review with enthusiasm, but firms must carefully consider the liability implications.</p><p>This article examines emerging case law surrounding legal tech adoption and answers the critical question: Is your firm liable if the AI misses a clause?</p>', 'excerpt' => 'Breaking down the emerging case law surrounding legal tech adoption.', 'category' => 'Technology' ), array( 'title' => 'Data Privacy Compliance: GDPR, DPDP and Beyond', 'content' => '<p>With India\'s DPDP Act now in force alongside established frameworks like GDPR and CCPA, multinational corporations face a complex web of data privacy obligations.</p><p>This comprehensive guide provides a unified compliance framework that addresses overlapping requirements and identifies jurisdiction-specific considerations.</p>', 'excerpt' => 'A unified compliance framework for navigating global data privacy regulations.', 'category' => 'Compliance' ) ); foreach ($posts as $p) { $cat = get_category_by_slug(sanitize_title($p['category'])); if (!$cat) { $inserted = wp_insert_term($p['category'], 'category'); $cat_id = is_wp_error($inserted) ? 0 : $inserted['term_id']; } else { $cat_id = $cat->term_id; } $post_id = wp_insert_post(array( 'post_title' => $p['title'], 'post_content' => $p['content'], 'post_excerpt' => $p['excerpt'], 'post_status' => 'publish', 'post_type' => 'post', 'post_category' => array($cat_id) )); } update_option('bijlani_blog_seeded_v1', true);}add_action('init', 'bijlani_seed_blog_posts');/** * Inject themed Related Practice Areas into practice pages * Runs on the_content filter for fresh render (bypasses LSCache) *//** * Inject themed Related Practice Areas via template (bypasses wpautop) * Uses a standalone PHP file to render clean HTML into page templates */function bijlani_related_practice_areas_template() { if (is_singular('page')) { $slug = get_post_field('post_name', get_the_ID()); $inject_pages = ['bail-lawyer-delhi', 'criminal-lawyer-delhi', 'criminal-lawyer-noida']; if (in_array($slug, $inject_pages)) { include dirname(__FILE__) . '/related-section.php'; } }}add_action('wp_footer', 'bijlani_related_practice_areas_template', 999);/** * Fix duplicate robots.txt blocks (WordPress generates its own) */function bijlani_fix_robots_txt() { = explode("", trim()); = []; = []; foreach ( as ) { = trim(); if (!in_array(, )) { [] = ; [] = ; } } return implode("", ) . "";}add_filter('robots_txt', 'bijlani_fix_robots_txt', 999);